package com.doge.mapper;

import com.doge.bean.pojo.category.Category;
import com.doge.bean.pojo.goods.Goods;
import com.doge.bean.pojo.goods.GoodsExample;

import java.math.BigDecimal;
import java.util.List;

import com.doge.bean.vo.goods.BrandListByCatAndBrandVO;
import com.doge.bean.vo.goods.CategoryByCatAndBrandVO;
import com.doge.bean.vo.stat.GoodsRowsDTO;
import com.doge.bean.vo.wxhome.FloorGoodsListVO;
import org.apache.ibatis.annotations.Param;

public interface GoodsMapper {
    long countByExample(GoodsExample example);

    int deleteByExample(GoodsExample example);

    int deleteByPrimaryKey(Integer id);

    int insert(Goods record);

    int insertSelective(Goods record);

    List<Goods> selectByExampleWithBLOBs(GoodsExample example);

    List<Goods> selectByExample(GoodsExample example);

    Goods selectByPrimaryKey(Integer id);

    int updateByExampleSelective(@Param("record") Goods record, @Param("example") GoodsExample example);

    int updateByExampleWithBLOBs(@Param("record") Goods record, @Param("example") GoodsExample example);

    int updateByExample(@Param("record") Goods record, @Param("example") GoodsExample example);

    int updateByPrimaryKeySelective(Goods record);

    int updateByPrimaryKeyWithBLOBs(Goods record);

    int updateByPrimaryKey(Goods record);


    List<CategoryByCatAndBrandVO> selectCategoryList();

    List<BrandListByCatAndBrandVO> selectBrandIdAndName();

    void updateDelete(@Param("goods") Goods goods);

    int updateRetailPrice(BigDecimal price, Integer goodsId);

    List<FloorGoodsListVO> selectGoodsAndBrand(@Param("category") Category category1);

    List<Goods> selectByKeyword(Integer keyword);

    List<GoodsRowsDTO> getGoodStat();
}